#pragma once
#include "../Utility/Predeclare.h"
#include "../RenderEngine/NBRenderEngine/NBRenderEngine.h"

using namespace EngineRender;
using namespace EngineCore;

class ModuleFactory
{
	
public:
	typedef _hr (*proc_makeRenderEngine)(std::unique_ptr<NBRenderEngine>&);

	ModuleFactory();
	~ModuleFactory();

	_hr SetUp(EngineProperty& prop, std::shared_ptr<PlatformLayer>& platform);


	_hr MakeRenderEngine(std::unique_ptr<NBRenderEngine>& pRenderEngine);

private:
	std::shared_ptr<PlatformLayer> m_pPlatform;

	PlatformLayer::HandleDLL m_dll_render;
	proc_makeRenderEngine m_proc_mre;


};

